Attaque de SQL Injection
Ce tutoriel vous guidera à travers les étapes d'une attaque de SQL Injection (SQLi). Une attaque SQLi permet à un attaquant d'exécuter des commandes SQL arbitraires sur la base de données d'une application web.
Introduction
Les attaques SQLi exploitent les vulnérabilités des applications web qui ne filtrent pas correctement les entrées des utilisateurs, permettant ainsi l'injection de commandes SQL malveillantes.
Ces attaques peuvent être classées en plusieurs types :
- SQLi basique : Exploitation des vulnérabilités directement via une chaîne de requête SQL.
- SQLi union-based : Utilisation de l'opérateur `UNION` pour fusionner les résultats des requêtes SQL.
- SQLi blind : Exploitation sans réponse directe visible (basée sur des réponses booléennes ou temporisées).
Prérequis
- Ordinateur avec Kali Linux ou tout autre distribution Linux
- Navigateur web (Firefox, Chrome, etc.)
- Accès à une application web vulnérable (environnement de test sécurisé)
Étape 1: Identification de la Vulnérabilité SQLi
Pour trouver une vulnérabilité SQLi, recherchez des champs de saisie utilisateur ou des paramètres d'URL qui ne sont pas correctement filtrés. Essayez d'injecter un simple code comme :
' OR '1'='1
Si cela retourne des résultats inattendus ou modifie la structure de la page, le site est vulnérable au SQLi.
Pour automatiser cette étape, utilisez des outils tels que Burp Suite ou des plugins comme SQLi Detector.
Étape 2: Exploitation de la Vulnérabilité SQLi
Une fois que vous avez identifié une vulnérabilité, injectez des commandes SQL plus complexes pour exfiltrer des données ou manipuler la base de données. Par exemple :
' UNION SELECT username, password FROM users --
Ce code retourne les noms d'utilisateur et les mots de passe des utilisateurs.
Exemple d'injection via une requête blind (booléenne) :
' AND (SELECT COUNT(*) FROM users) > 0 --
Étape 3: Utilisation d'Outils pour Automatiser l'Exploitation
Des outils comme sqlmap peuvent automatiser l'exploitation des vulnérabilités SQLi. Exemple de commandes :
sqlmap -u "http://vulnerable-site.com/page?id=1" --batch --dbs
Pour extraire des informations spécifiques :
sqlmap -u "http://vulnerable-site.com/page?id=1" --tables -D database_name
sqlmap -u "http://vulnerable-site.com/page?id=1" -T table_name --dump
Étape 4: Blind SQL Injection
Pour les attaques blind (basées sur des réponses booléennes ou des délais) :
' OR IF(1=1, SLEEP(5), 0) --
Cette commande vérifie la vulnérabilité en déclenchant un délai.
Mesures de Sécurité
Pour se protéger contre les attaques SQLi, suivez ces bonnes pratiques :
- Utiliser des requêtes préparées avec des paramètres liés. Exemple en Python :
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
Bonus: Environnements de Test
Configurez des environnements sécurisés pour tester vos compétences :
Conclusion
Ce tutoriel a montré comment effectuer une attaque de SQL Injection (SQLi). Bien que ces attaques puissent être très dangereuses, des mesures de sécurité appropriées peuvent aider à les prévenir et à protéger les bases de données et les applications web.
Il est impératif de pratiquer ces techniques uniquement dans des environnements légaux et sécurisés pour renforcer vos compétences sans causer de dommages.